import { request } from '@/utils/request'

//* ---------------左边的正在直播信息,最多只渲染十个-------------
export interface LiveInfoModle {
  count: number //直播信息的个数
  group: string //'default'
  items: {
    face: string //头像
    link: string
    title: string
    uid: number
    uname: string
  }[]
}

export const reqLiveInfo = () =>
  request<LiveInfoModle>({
    url: '/dynamic_svr/v1/dynamic_svr/w_live_users',
    params: { size: 10 },
  })

//* -------------右边的话题量，固定取6个就行---------------------
export interface TopicModel {
  discuss: number //讨论量
  id: number
  jump_url: string
  name: string //话题名
  view: number //浏览量
}

export const reqTopic = () =>
  request<{ topic_items: TopicModel[] }>({
    url: '/topic/web/dynamic/rcmd',
    params: {
      source: 'Web',
      page_size: 6,
    },
  })

//* ---------------中间栏动态up主头像列表-------------
export interface DynamicUpersModel {
  has_update: number
  is_reserve_recall: boolean
  user_profile: {
    info: {
      face: string
      uid: number
      uname: string
    }
  }
}

export const reqDynamicUpers = () =>
  request<{ items: DynamicUpersModel[] }>({
    url: '/dynamic_svr/v1/dynamic_svr/w_dyn_uplist?teenagers_mode=0',
  })

//* ---------------动态主内容列表----------------
/* 
  我们只请求type为8的动态，也就是投稿视频动态
  !这里有坑，首次请求时，需要请求dynamic_new，拿到20条cards数据和history_offset的值
  !滚动刷新也就是第二次请求下一页动态时，需要请求的api是dynamic_history，需要传offset_dynamic_id作为分页标识，来源就是第一次请求时得到的history_offset
  !之后就不再请求dynamic_new。从第二次开始都是使用dynamic_history，返回next_offset的值作为下一次分页标识的offset_dynamic_id值
  !两个请求的分页标识字段有点不一样，需要特别处理。但cards里面的是一样的，其他东西可以不要
*/

export const reqVideoDynamic_history = (uid: number, offset_dynamic_id: number) =>
  request<DynamicModel>({
    url: '/dynamic_svr/v1/dynamic_svr/dynamic_history',
    params: {
      uid,
      offset_dynamic_id,
      type: 8, //固定8，只要投稿视频类型的动态
      platform: 'web',
      from: '',
    },
  })

export const reqVideoDynamic_new = (uid: number) =>
  request<DynamicModel>({
    url: '/dynamic_svr/v1/dynamic_svr/dynamic_new',
    params: {
      uid,
      type_list: 8, //固定8，只要投稿视频类型的动态
      platform: 'web',
      from: '',
    },
  })

//需要的东西有一点分散，投稿动态页面中，需要点击up主跳转个人空间的uid和点击视频跳转播放页的aid和bvid和cid
export interface DynamicModel {
  history_offset: number //dynamic_new返回的分页标识。只会使用一次，为方便就放在一起了
  has_more: number //1表示还有更多可以刷新
  next_offset: number //dynamic_history返回的分页标识
  max_dynamic_id: number //最大的动态id，(猜测)如果dynamic_new也就是首次请求动态时，next_offset===max_dynamic_id就表示没有最新的了

  cards: DynamicCardsModel[]
}

export interface DynamicCardsModel {
  card: {
    aid: number
    cid: number
    copyright: number
    desc: string //视频的描述
    duration: number //视频秒数
    dynamic: string //动态的文本（非里卡片内容）
    pic: string //视频封面
    pubdate: number //日期
    stat: {
      danmaku: number //视频里的弹幕量
      like: number //动态点赞量
      reply: number //动态评论数
      view: number //视频里的播放量
    }
    tid: number
    title: string //视频标题
  }
  desc: {
    uid: number //!up主的uid
    type: number //动态类型 8
    rid: number
    like: number //动态点赞量，和card里的一样
    dynamic_id: number //动态id
    timestamp: number //动态时间
    user_profile: {
      info: {
        uname: string
        face: string
        uid: number
      }
    }
    bvid: 'BV1YP4y137MB'
  }
}
